package Dao.impl;

import java.util.List;

import javax.persistence.Query;

import Bean.Mecanico;
import Bean.Produto;
import Bean.TipoItem;
import Dao.interfaces.IProdutoDao;
import exception.CrudException;

public class ProdutoDaoImpl extends GenericCrud<Produto> implements IProdutoDao {

	@Override
	public Produto carregar(Long id) throws CrudException {
		return carregar(Produto.class, id);
	}

	@Override
	public List<Produto> carregarTodos() throws CrudException {
		return carregarTodos(Produto.class);
	}

	@Override
	public void excluir(Long id) throws CrudException {
		excluir(Produto.class, id);		
	}

	@Override
	public List<Produto> carregarPorNome(String nome, TipoItem tipo) throws CrudException {
		em = emf.createEntityManager();	
		List<Produto> lista;
		
		String query = "SELECT o FROM Produto o where o.descricao like '%" + nome + "%'";
		
		if (tipo != null)
			query += "and o.tipoItem = :tipo";
		
		Query query2 = em.createQuery(query);
		
		if (tipo != null)
			query2.setParameter("tipo", tipo);
		
		lista = query2.getResultList();
		em.close();
		return lista;
	}

}
